﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Runtime.Serialization;
//using System.ServiceModel;
//using System.ServiceModel.Web;
//using System.Text;
//using ImageAppDataModels;
//using System.IO;
//using System.Drawing;
//using ImageAppViewModels;
//using WpfImageDuplicates;

//namespace ImageService
//{    
//    public class Service1 : IService1
//    {
//        public static Window1 MainWindow;
//        public static IDataProvider DataProvider;

//        static Service1()
//        {
//            MainWindow = new Window1();
//            MainWindow.Show();
//        }
        
//        public Service1()
//        {
//            DataProvider = MainWindow;
//        }
        
//        public FileImageDto GetImage(string identifier)
//        {
//            var vm = DataProvider.GetCurrentFileImageCollectionViewModels().Find(identifier);
//            if (vm == null)
//            {
//                return null;
//            }
//            FileImageDto result = ViewModelToDto(vm);
//            result.BitmapBytes = File.ReadAllBytes(identifier);
//            result.BitmapByteType = 1;
//            return result;
//        }

//        public static FileImageDto ViewModelToDto(FileImageViewModel vm)
//        {
//            FileImageDto result = new FileImageDto();
//            result.FileName = vm.FileName;
//            result.Created = vm.FileDateTime;
//            result.FileSize = vm.FileSize;
//            return result;
//        }

//        public void SaveImage(FileImageDto image)
//        {
//            File.WriteAllBytes(image.FileName, image.BitmapBytes);
//        }

//        public List<FileImageDto> GetThumbnails(List<string> identifiers)
//        {
//            List<FileImageDto> results = new List<FileImageDto>();
//            for (int n = 0; n < identifiers.Count; n++)
//            {
//                var vm = DataProvider.GetCurrentFileImageCollectionViewModels().Find(identifiers[n]);
//                if (vm != null)
//                {
//                    FileImageDto result = ViewModelToDto(vm);
//                    result.BitmapByteType = 2;
//                    using (MemoryStream ms = new MemoryStream())
//                    {
//                        vm.Thumbnail.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
//                        result.BitmapBytes = ms.ToArray();
//                    }                    
//                    results.Add(result);
//                }
//            }
//            return results;
//        }
        
//        public List<FileImageDto> GetAllImageMetadata()
//        {
//            List<FileImageDto> results = new List<FileImageDto>();

//            var vms = DataProvider.GetCurrentFileImageCollectionViewModels();
//            for (int n = 0; n < vms.Count; n++)
//            {
//                var vm = vms[n];
//                FileImageDto dto = ViewModelToDto(vm);
//                results.Add(dto);
//            }

//            return results;
//        }
        
//        public byte[] ReadAllImageBytes(string fileName)
//        {
//            return File.ReadAllBytes(fileName);
//        }
        
//        public byte[] ReadAllThumbnailBytes(string fileName)
//        {
//            return File.ReadAllBytes(fileName);
//        }

//        public void WriteAllBytes(string fileName, byte[] bytes)
//        {
//            File.WriteAllBytes(fileName, bytes);
//        }

//        public void Copy(string orig, string newFileName)
//        {
//            File.Copy(orig, newFileName);
//        }

//        public void Delete(string fileName)
//        {
//            File.Delete(fileName);
//        }

//        public bool Exists(string fileName)
//        {
//            return File.Exists(fileName);
//        }

//        public void SetAttributes(string fileName, FileAttributes attribs)
//        {
//            File.SetAttributes(fileName, attribs);
//        }
//    }
//}
